using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Gratamira.CapaNegocio;
using Infragistics.Win.UltraWinEditors;
using Infragistics.Win.UltraWinMaskedEdit;

namespace Gratamira.Presentacion
{
    public partial class frmMaePedazo : frmBaseMaestra, IBaseMaestra
    {
        private Pedazo mPedazo = new Pedazo();
        private BindingSource fuenteEnlace = new BindingSource();

        #region Constructores
        public frmMaePedazo(estadoPantalla pModoPantalla)
        {
            InitializeComponent();
            llenarListasUnidades();
            base.Estado = pModoPantalla;
        }

        public frmMaePedazo(Pedazo pPedazo, estadoPantalla pModoPantalla)
        {
            InitializeComponent();
            mPedazo = pPedazo;
            llenarListasUnidades();
            base.Estado = pModoPantalla;
        }
        #endregion

        private void llenarListasUnidades()
        {
            ddlEstado.Items.Add("Activo");
            ddlEstado.Items.Add("Inactivo");
            ddlEstado.Items.Add("Salida");
            ddlEstado.SelectedIndex = 0;
        }

        public override void deshabilitarControles()
        {
            //No permite modificar el contenido de los controles
            txtGrupoID.Enabled = false;
            cmdGrupo.Enabled = false;
            txtDescripcionGrupo.Enabled = false;
            txtCodigo.Enabled = false;
            txtLargo.Enabled = false;
            txtAncho.Enabled = false;
            txtFechaIngreso.Enabled = false;
            txtFechaSalida.Enabled = false;
            txtContrato.Enabled = false;
            ddlEstado.Enabled = false;
        }

        public override void habilitarControles()
        {
            //Permite modificar el contenido de los controles
            if (ddlEstado.SelectedItem.ToString() != "Salida")
            {
                if (base.Estado == estadoPantalla.Insertar)
                {
                    txtCodigo.Enabled = true;
                    txtGrupoID.Enabled = true;
                    cmdGrupo.Enabled = true;
                    txtDescripcionGrupo.Enabled = false;
                    txtFechaSalida.Enabled = false;
                    txtContrato.Enabled = false;
                    ddlEstado.Enabled = false;
                }
                else if (base.Estado == estadoPantalla.Editar)
                {
                    txtFechaSalida.Enabled = false;
                    txtContrato.Enabled = false;
                    ddlEstado.Enabled = true;
                }
                txtLargo.Enabled = true;
                txtAncho.Enabled = true;
                txtFechaIngreso.Enabled = true;
            }
            else {
                throw new Exception("No se puede actualizar un pedazo que ya se encuentra con estado de Salida.");
            }
        }

        public override void unirDatosClaseForma()
        {
            fuenteEnlace.DataSource = mPedazo;
            txtGrupoID.DataBindings.Add("Text", fuenteEnlace, "GrupoID");;
            txtDescripcionGrupo.DataBindings.Add("Text", fuenteEnlace, "DescripcionGrupo"); ;
            txtCodigo.DataBindings.Add("Text", fuenteEnlace, "PedazoID"); ;
            txtLargo.DataBindings.Add("Value", fuenteEnlace, "Largo");
            txtAncho.DataBindings.Add("Value", fuenteEnlace, "Ancho"); ;
            txtFechaIngreso.DataBindings.Add("Text", fuenteEnlace, "FechaIngreso");
            txtFechaSalida.DataBindings.Add("Text", fuenteEnlace, "FechaSalida");
            txtContrato.DataBindings.Add("Text", fuenteEnlace, "Contrato");
            ddlEstado.DataBindings.Add("Value", fuenteEnlace, "Estado");
        }

        //public override void unirDatosFormaClase()
        //{
        //    mPedazo.GrupoID = txtGrupoID.Text;
        //    mPedazo.DescripcionGrupo = txtDescripcionGrupo.Text;
        //    mPedazo.PedazoID = txtCodigo.Text;
        //    mPedazo.Largo = Convert.ToDecimal(txtLargo.Value);
        //    mPedazo.Ancho = Convert.ToDecimal(txtAncho.Value);
        //    mPedazo.FechaIngreso = txtFechaIngreso.Text;
        //    mPedazo.FechaSalida = txtFechaSalida.Text;
        //    mPedazo.ContratoID = txtContrato.Text;
        //    mPedazo.Estado = ddlEstado.Text;
        //}

        public override bool salvarCambios()
        {
            mPedazo.UsuarioCreacion = Usuario.NombreUsuario;
            mPedazo.UsuarioModificacion = Usuario.NombreUsuario;
            return mPedazo.insertarPedazo();
            
        }

        public override void actualizarCambios()
        {
            mPedazo.UsuarioModificacion = Usuario.NombreUsuario;
            mPedazo.actualizarPedazo();
        }

        public override void limpiarControles()
        {
            txtGrupoID.Text = "";
            txtDescripcionGrupo.Text = "";
            txtCodigo.Text = "";
            txtLargo.Value = "";
            txtAncho.Value = "";
            txtFechaSalida.Text = "";
            txtFechaSalida.Text = "";
            txtContrato.Text = "";
        }

        public override void leerDatosAuditoria(out string pUsuaCrea, out string pFechCrea, out string pUsuaModi, out string pFechModi)
        {
            pUsuaCrea = mPedazo.UsuarioCreacion;
            pUsuaModi = mPedazo.UsuarioModificacion;
            pFechCrea = mPedazo.FechaCreacion;
            pFechModi = mPedazo.FechaModificacion;
        }

        public override bool hayDatosModificados()
        {
            return mPedazo.Modificada;
        }

        public override bool verificarDatos()
        {
            if (utilidadesPresentacion.verificarContenido(txtGrupoID, epPedazo) &&  utilidadesPresentacion.verificarContenido(txtCodigo, epPedazo) &&
                utilidadesPresentacion.verificarContenido(ddlEstado, epPedazo) && utilidadesPresentacion.verificarContenido(txtLargo, epPedazo) &&
                utilidadesPresentacion.verificarContenido(txtAncho, epPedazo))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        private void cmdGrupo_Click(object sender, EventArgs e)
        {
            string tAdministrador;
            if (Usuario.comprobarAcceso("frmConEmpresa", out tAdministrador))
            {
                frmConGrupo pantalla = new frmConGrupo(tAdministrador);
                pantalla.grupoSeleccionado.GrupoID = txtGrupoID.Text;
                pantalla.grupoSeleccionado.Nombre = txtDescripcionGrupo.Text;
                pantalla.ShowDialog();
                txtGrupoID.Text = pantalla.grupoSeleccionado.GrupoID;
                txtDescripcionGrupo.Text = pantalla.grupoSeleccionado.Nombre;
                txtCodigo.Focus();
            }
        }

        private void ddlEstado_ValueChanged(object sender, EventArgs e)
        {
            if (base.Estado == estadoPantalla.Editar)
            {
                if (ddlEstado.SelectedItem.ToString() == "Salida")
                {
                    txtFechaSalida.Enabled = true;
                    txtContrato.Enabled = true;
                    txtLargo.Enabled = false;
                    txtAncho.Enabled = false;
                    txtFechaIngreso.Enabled = false;
                }
                else if (ddlEstado.SelectedItem.ToString() == "Inactivo")
                {
                    txtFechaSalida.Enabled = true;
                    txtContrato.Enabled = false;
                    txtLargo.Enabled = false;
                    txtAncho.Enabled = false;
                    txtFechaIngreso.Enabled = false;
                }
                else
                {
                    habilitarControles();
                }
            }
        }
    }
}